/*
 * PajaroAzul.cpp
 *
 *  Created on: 16/10/2012
 *      Author: Ignacio Galvez
 */
#include <cmath>
#include <iostream>
#include "PajaroAzul.h"
#include "Daniable.h"

PajaroAzul::PajaroAzul(double anguloDeCaida,double normaVelocidadInicial,
 double x, double y, double tiempoInicial):
		Pajaro(anguloDeCaida,normaVelocidadInicial,VIDA_PAJARO_AZUL, x, y,
		 tiempoInicial) { 
	std::string path("dibujos/pajaro2.png");
	setImagePath(path);
}
double PajaroAzul::VIDA_PAJARO_AZUL = 1;

double PajaroAzul::FACTOR = sqrt(0.40);


void PajaroAzul::daniar(Daniable* daniable){
	daniable->serDaniadoPorPajaroAzul();
}

void PajaroAzul::rebotar(double ticks) {
	const double G = 10;
	double anguloRebote;
	double tangenteAnguloRebote;
	std::cout << "rebotando pajaroAzul" << std::endl;
	double vx = getNormaVelocidadInicial() * cos(getAnguloDeCaida());
	double vy = getNormaVelocidadInicial() * sin(getAnguloDeCaida()) - G * 
	(ticks - getTiempoInicial());
	double vx2 = pow(vx, 2);
	double vy2 = pow(vy, 2);
	double V02 = vx2 + vy2;
	double V0 = sqrt(V02);
	tangenteAnguloRebote = (fabs(vy)/vx);
	anguloRebote = atan(tangenteAnguloRebote);
	if (anguloRebote < 0) anguloRebote = anguloRebote + M_PI;
	setXinicial(getPosicionX());
	setYinicial(getPosicionY());
	setPosicionY(getPosicionY());
	setTiempoInicial(ticks);
	//setPosicionY(getPosicionY() + epsilon);
	setAnguloCaida(anguloRebote);
	modificarVelocidadInicial(FACTOR, V0);
}

std::string & PajaroAzul::getImagePath() {
	return  imagePath;
}
void  PajaroAzul::setImagePath(std::string &path) {
	imagePath = path;
}

PajaroAzul::~PajaroAzul() {}


